<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>helix-front documentation</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>

        <div class="navbar navbar-default navbar-fixed-top visible-xs">
            <a href="../" class="navbar-brand">helix-front documentation</a>
            <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="hidden-xs menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content class">
                   <div class="content-data">












<ol class="breadcrumb">
  <li>Classes</li>
  <li >Task</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="active">
            <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
        </li>
        <li >
            <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="c-info">
        <p class="comment">
            <h3>File</h3>
        </p>
        <p class="comment">
            <code>src/app/workflow/shared/workflow.model.ts</code>
        </p>















    </div>


    <div class="tab-pane fade  tab-source-code" id="c-source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import * as _ from &#x27;lodash&#x27;;

export class Task {}

export class Job {
  readonly name: string;
  readonly rawName: string;
  readonly startTime: string;
  readonly state: string;
  readonly parents: string[];

  readonly workflowName: string;
  readonly clusterName: string;

  // will load later
  config: any;
  context: any;

  constructor(
    rawName: string,
    workflowName: string,
    clusterName: string,
    startTime: string,
    state: string,
    parents: string[]
  ) {
    this.rawName &#x3D; rawName;
    // try to reduce the name
    this.name &#x3D; _.replace(rawName, workflowName + &#x27;_&#x27;, &#x27;&#x27;);
    this.workflowName &#x3D; workflowName;
    this.clusterName &#x3D; clusterName;
    this.startTime &#x3D; startTime;
    this.state &#x3D; state;
    // try to reduce parent names
    this.parents &#x3D; _.map(parents, (parent) &#x3D;&gt;
      _.replace(parent, workflowName + &#x27;_&#x27;, &#x27;&#x27;)
    );
  }
}

export class Workflow {
  readonly name: string;
  readonly clusterName: string;
  readonly config: any;
  readonly jobs: Job[];
  readonly context: any;
  readonly json: any;

  get isJobQueue(): boolean {
    return (
      this.config &amp;&amp;
      this.config.IsJobQueue &amp;&amp;
      this.config.IsJobQueue.toLowerCase() &#x3D;&#x3D; &#x27;true&#x27;
    );
  }

  get state(): string {
    return this.context.STATE || &#x27;NOT STARTED&#x27;;
  }

  constructor(obj: any, clusterName: string) {
    this.json &#x3D; obj;
    this.name &#x3D; obj.id;
    this.clusterName &#x3D; clusterName;
    this.config &#x3D; obj.WorkflowConfig;
    this.context &#x3D; obj.WorkflowContext;
    this.jobs &#x3D; this.parseJobs(obj.Jobs, obj.ParentJobs);
  }

  protected parseJobs(list: string[], parents: any): Job[] {
    const result: Job[] &#x3D; [];

    _.forEach(list, (jobName) &#x3D;&gt; {
      result.push(
        new Job(
          jobName,
          this.name,
          this.clusterName,
          _.get(this.context, [&#x27;StartTime&#x27;, jobName]),
          _.get(this.context, [&#x27;JOB_STATES&#x27;, jobName]),
          parents[jobName]
        )
      );
    });

    return result;
  }
}
</code></pre>
    </div>
</div>









                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
            var COMPODOC_CURRENT_PAGE_URL = 'Task.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>
